package com.vlong.town.service.restaurant;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.vlong.town.entity.restaurant.Restaurant;
import com.vlong.town.mapper.restaurant.RestaurantMapper;

/**
 * @author Assassin
 */
@Service
public class RestaurantService{

	// Field

	@Autowired
	private RestaurantMapper restaurantMapper;// DAO接口

	// Methods

   /**
	* 添加
	* @param restaurantId 主键
	* @param townId 
	* @param restaurantName 饭店名称
	* @param state 是否删除[0-否 1-是]
	* @param status 状态信息
	* @param content 内容描述
	* @param address 地址
	* @param thumbnail 缩略图
	* @param createTime 创建时间
	* @param updateTime 修改时间
	* @return Long restaurantId 添加后的数据库主键值
	*/
	@Transactional
	public Long add(Long restaurantId, Long townId, String restaurantName, Integer state, Integer status, String content, String address, String thumbnail, String reason,Long createTime, Long updateTime) {
		// 构造参数实体
		Restaurant restaurant = new Restaurant();
		restaurant.setRestaurantId(restaurantId);// Set 主键
		restaurant.setTownId(townId);// Set 
		restaurant.setRestaurantName(restaurantName);// Set 饭店名称
		restaurant.setState(state);// Set 是否删除[0-否 1-是]
		restaurant.setStatus(status);// Set 状态信息
		restaurant.setContent(content);// Set 内容描述
		restaurant.setAddress(address);// Set 地址
		restaurant.setThumbnail(thumbnail);// Set 缩略图
		restaurant.setReason(reason);
		restaurant.setCreateTime(createTime);// Set 创建时间
		restaurant.setUpdateTime(updateTime);// Set 修改时间
		// 调用DAO接口
		this.restaurantMapper.insert(restaurant);
		return restaurant.getRestaurantId();
	}

   /**
	* 删除
	* @param restaurantId 主键值
	*/
	@Transactional
	public void delete(Long restaurantId) {
		// 调用DAO接口
		this.restaurantMapper.delete(restaurantId);
	}

   /**
	* 更新
	* @param restaurantId 主键
	* @param townId 
	* @param restaurantName 饭店名称
	* @param state 是否删除[0-否 1-是]
	* @param status 状态信息
	* @param content 内容描述
	* @param address 地址
	* @param thumbnail 缩略图
	* @param createTime 创建时间
	* @param updateTime 修改时间
	*/
	@Transactional
	public void edit(Long restaurantId, Long townId, String restaurantName, Integer state, Integer status, String content, String address, String thumbnail, String reason,Long createTime, Long updateTime) {
		// 构造参数实体
		Restaurant restaurant = new Restaurant();
		restaurant.setRestaurantId(restaurantId);// Set 主键
		restaurant.setTownId(townId);// Set 
		restaurant.setRestaurantName(restaurantName);// Set 饭店名称
		restaurant.setState(state);// Set 是否删除[0-否 1-是]
		restaurant.setStatus(status);// Set 状态信息
		restaurant.setContent(content);// Set 内容描述
		restaurant.setAddress(address);// Set 地址
		restaurant.setThumbnail(thumbnail);// Set 缩略图
		restaurant.setReason(reason);
		restaurant.setCreateTime(createTime);// Set 创建时间
		restaurant.setUpdateTime(updateTime);// Set 修改时间
		// 调用DAO接口
		this.restaurantMapper.update(restaurant);
	}

   /**
	* 主键查询
	* @param restaurantId 主键值
	* @return Restaurant 实体
	*/
	@Transactional(readOnly = true)
	public Restaurant queryById(Long restaurantId) {
		// 调用DAO接口
		return this.restaurantMapper.selectById(restaurantId);
	}

   /**
	* 根据条件查询列表
	* @param restaurantId 主键
	* @param townId 
	* @param restaurantName 饭店名称
	* @param state 是否删除[0-否 1-是]
	* @param status 状态信息
	* @param content 内容描述
	* @param address 地址
	* @param thumbnail 缩略图
	* @param createTime 创建时间
	* @param updateTime 修改时间
	* @return List<Restaurant> 实体List
	*/
	@Transactional(readOnly = true)
	public List<Restaurant> queryList(Long restaurantId, Long townId, String restaurantName, Integer state, Integer status, String content, String address, String thumbnail, String reason,Long createTime, Long updateTime) {
		// 构造参数实体
		Restaurant restaurant = new Restaurant();
		restaurant.setRestaurantId(restaurantId);// Set 主键
		restaurant.setTownId(townId);// Set 
		restaurant.setRestaurantName(restaurantName);// Set 饭店名称
		restaurant.setState(state);// Set 是否删除[0-否 1-是]
		restaurant.setStatus(status);// Set 状态信息
		restaurant.setContent(content);// Set 内容描述
		restaurant.setAddress(address);// Set 地址
		restaurant.setThumbnail(thumbnail);// Set 缩略图
		restaurant.setReason(reason);
		restaurant.setCreateTime(createTime);// Set 创建时间
		restaurant.setUpdateTime(updateTime);// Set 修改时间
		// 调用DAO接口
		return this.restaurantMapper.selectList(restaurant);
	}

}